home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Whiteline: delta
/
whiteline CD Series - delta.iso
/
tex
/
style
/
misc
/
color.sty
< prev
next >
Wrap
Text File
|
1995-11-25
|
13KB
|
327 lines
\def\fileversion{v1}
\def\filedate{91/12/04}
\immediate\write\sixt@@n{File: `color.sty'
\fileversion\space <\filedate> (SPQR, from LL)}
% Sebastian Rahtz
% 5 Granary Court
% St Andrewgate
% York Y01 2JR
%
%spqr@uk.ac.soton.ecs
% what this really is!
%----------------------------------------
% COLOR.DOC, 21 March 1990
% derived from
% PS-SLIDES DOCUMENT -- released 14 November 1989
% for SliTeX version 2.09
% Copyright (C) 1988 by Leslie Lamport
% \typeout{`color' -- released <21 Mar 90>}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ABOUT THIS DOCUMENT STYLE %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This style puts \special commands in the .dvi file that, when printed %
% on the proper color printer, produces colored output. It is currently %
% configured to work when the .dvi file is run through the dvips program, %
% or dvitops. See the case statement that follows.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DIFFERENCES BETWEEN color.sty AND ORDINARY SLiTeX %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% * The \colors command is made a no-op. Colors that are not predefined
% must be defined with the \newpscolor command (see below).
%
% * The \colorslides and \blackandwhite commands are the same, except that
% \colorslides prints only slides and overlays, not notes.
%
% * The meaning of the \invisible declaration has been changed, as described
% below. The old \visible command is the same as the new \white command.
%
% * The default page style is `plain'. (The alignment marks are no longer
% of any use.)
%
% * The positioning of the body of the slide and the slide number have
% been changed to accomodate the QMS printer's small effective page
% size.
%
% Except for these differences, a SLiTeX input file prepared for the
% ordinary `slides' style SHOULD work with the `ps-slides' style. There
% are probably some SLiTeX commands that will interact incorrectly with
% color-changing commands. These problems will be corrected when
% reported. The most likely bug is a color declaration `escaping from
% its scope', having a more global effect than it should. Such a problem
% can be worked around by adding redundant color-changing commands.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% THE \special COMMAND %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% \@drawcolor produces a \special command that sets the printer's color %
% to the RGB value indicated by the control sequences \@red, \@green, %
% and \@blue. This command must be changed to customize the document %
% style to work under other systems
% %
%
\@ifundefined{driver@setup}%
{
\typeout{WARNING *** driver setup codes are unknown in this setup ***}
\typeout{*** No color changes ***}
\def\@drawcolor{}
}
{
\typeout{Driver type \the\driver@setup}
% 0. dvi2lj: no rotation possible
% 1. dvi2ps (Les Carr)
% 2. dvitops (James Clark)
% 3. dvips (Tom Rokicki)
\ifcase\driver@setup
% case 0 not available
\typeout{WARNING *** A color mechanism is not defined for this setup ***}
\def\@drawcolor{}
\or % case 1
\typeout{WARNING *** A color mechanism is not defined for this setup ***}
\def\@drawcolor{}
\or % case 2 (dvitops, Adobe-encoded)
\newcount\regionno
\def\@drawcolor{%
\special{dvitops: begin \the\regionno}%
\special{dvitops: rgbcolor \the\regionno\space \@red\space \@green\space \@blue}%
\global\advance\regionno by 1
}
\or % case 3 (dvips, Rokicki, virtual fonts)
\def\@drawcolor{\special{ps: \@red\space \@green\space %
\@blue\space setrgbcolor\space}} %
\else %
\typeout{WARNING *** This driver setup is unknown - no color mechanism ***}
\def\@drawcolor{}
\fi
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% NEW AND CHANGED COMMANDS %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% \newpscolor{\PUCE}{RED}{GREEN}{BLUE}
% \renewpscolor{\PUCE}{RED}{GREEN}{BLUE}
%
% Define \PUCE to produce a new color with the indicated RGB values,
% where RED, GREEN, and BLUE are decimal numbers between 0 and 1
% (inclusive). For example:
% Black = [RED: 0, GREEN: 0, BLUE: 0]
% White = [RED: 1, GREEN: 1, BLUE: 1]
% Red = [RED: 1, GREEN: 0, BLUE: 0]
% Light yellow = [RED: .5, GREEN: .5, BLUE: 0]
% For \newpscolor \PUCE must not already be defined; for
% \renewpscolor, it must already be defined (but not necessarily as a
% color).
%
%
% The following colors are predefined:
%
% \black, \red, \green, \blue, \yellow, \magenta, \cyan, \white
%
% For ordinary printers, which assume white paper, \white text is invisible.
% Unlike in ordinary SLiTeX, color-changing commands can be used in
% math mode.
%
%
% \invisible
% \visible
%
% Ordinary declarations of visibility of the text. Invisible text
% is not printed. (TeX prints it in a font that whose letters are all
% print as spaces.)
% Visibility is independent of color, so you can have invisible red text,
% visible green text, and even visible white text. (Visible white text
% can be seen only when printed by a weird printer that prints on
% nonwhite paper.)
%
%
% \norestore
% \restore
%
% The \norestore declaration inhibits the proper scoping of color
% declarations, causing color declarations to act as if they were global.
% The \restore command causes the current and future colors to become the
% ones they would have been had there been no \norestore command.
% Both \norestore and \restore are global declarations. Example:
%
% \black black {\green green
% \norestore {\red red} red
% \restore
% green}
% black
%
% The \norestore declaration is handy for color commands inside a tabbing
% or tabular environment. However, there are some anomalies:
%
% * A \restore command inside a tabbing environment may not work exactly
% as it should. Try putting the command immediately after a \=, \\, or
% \>.
%
% * An \fbox, \framebox, or \frame command may do weird things in the
% scope of a \norestore if there's a color declaration in its argument.
%
% * A \background may behave strangely inside the scope of a \norestore.
%
%
% \background{\yellow}{TEXT}
%
% Typesets TEXT in an \mbox with a yellow box behind it. The yellow box
% is the width of TEXT plus a border of width \bgborder around it.
%
%
% \hollowbackground
% \filledbackground
%
% A \hollowbackground declaration causes any \background command in its
% scope to produce an outline, much like \fbox, instead of a filled box.
% This is useful for checking the slides with Proof or on a
% black-and-white printer. A \filledbackground declaration has the
% opposite effect.
%
%
% \nogray
%
% A declaration that makes every color other than \white be equivalent to
% \black, and issues a \hollowbackground declaration
%
% \norestore and \restore
%
\def\norestore{\gdef\@aftergroup{}}
\def\restore{\gdef\@aftergroup{\@drawcolor}\@drawcolor}
%
% \@setcolor{RED}{GREEN}{BLUE} sets the current RGB value within SLiTeX
% and calls \@drawcolor to produce the PostScript commands to change
% their values in the output.
%
\def\@setcolor#1#2#3{\edef\@red{#1}\edef\@green{#2}\edef\@blue{#3}\@drawcolor
\aftergroup\@aftergroup}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% \newpscolor{\PUCE}{RED}{GREEN}{BLUE} :
% defines \PUCE to produce a new color with the indicated RGB values.
% \PUCE must not already be defined.
% \renewpscolor{\PUCE}{RED}{GREEN}{BLUE} :
% same as \newpscolor but assumes \PUCE is already defined.
%
\def\newpscolor#1#2#3#4{\newcommand{#1}{\@setcolor{#2}{#3}{#4}}}
\def\renewpscolor#1#2#3#4{\renewcommand{#1}{\@setcolor{#2}{#3}{#4}}}
%% DEFINE SOME STANDARD COLORS
\newpscolor{\black}{0}{0}{0}
\newpscolor{\red}{1}{0}{0}
\newpscolor{\yellow}{1}{1}{0}
\newpscolor{\magenta}{1}{0}{1}
\newpscolor{\green}{0}{1}{0}
\newpscolor{\cyan}{0}{1}{1}
\newpscolor{\blue}{0}{0}{1}
\newpscolor{\white}{1}{1}{1}
% REDEFINE \colorslides SO IT PRODUCES ONLY SLIDES, NO NOTES,
% AND WITHOUT ANY COLOR LAYER
\def\colorslides#1{\newpage\setcounter{page}{0}\@bwtrue\@visibletrue
\if@onlyslidesw \xdef\@doslidelist{\@doglslidelist}%
\@setlimits\@doslidelist\@doslidelow\@doslidehigh\fi
\xdef\@doglnotelist{999998,999999,999999}%
\xdef\@donotelist{\@doglnotelist}%
\@setlimits\@donotelist\@donotelow\@donotehigh\@onlynoteswtrue
\normalsize\setcounter{slide}{0}\setcounter{overlay}{0}%
\setcounter{note}{0}\@makingslidestrue\input #1\@makingslidesfalse}
% REDEFINE \colors TO BE A NO-OP
\def\colors#1{}
% Change to bowels of tabular environment needed to fix a bug that occurs
% when a color command occurs in the last element.
%
\def\@tabclassz{\ifcase \@lastchclass \@acolampacol \or \@ampacol \or
\or \or \@addamp \or
\@acolampacol \or \@firstampfalse \@acol \fi
\edef\@preamble{\@preamble
\ifcase \@chnum
\hfil{\ignorespaces\@sharp\unskip}\hfil
\or {\ignorespaces\@sharp\unskip}\hfil
\or \hfil\hskip\z@ {\ignorespaces\@sharp\unskip}\fi}}
% The following modify the tabbing environment to get the scope of the
% color commands to be the same as for other declarations in a tabbing
% environment.
%
\def\@startfield{\global\setbox\@curfield\hbox\bgroup\begingroup}
\def\@stopfield{\endgroup\egroup}
\def\@contfield{\global\setbox\@curfield\hbox\bgroup\begingroup
\unhbox\@curfield}
\def\visible{\@mmodetest\@visibletrue\@currsize\@currfont
\white\ignorespaces}
\let\visible=\visible
\let\endvisible=\relax
% The following modifies \fbox to make it work right with color commands.
% However, \fbox, \framebox, and \frame will do weird things
% if \norestore is in effect.
%
\long\def\fbox#1{\leavevmode\setbox\@tempboxa\hbox{#1}\@tempdima\fboxrule
\advance\@tempdima \fboxsep \advance\@tempdima \dp\@tempboxa
\hbox{\lower \@tempdima\hbox
{\vbox{\if@visible \hrule \@height \else \vskip\fi\fboxrule
\hbox{\if@visible\vrule \@width \else \hskip \fi\fboxrule
\hskip\fboxsep
\vbox{\vskip\fboxsep \box\@tempboxa\@aftergroup
\vskip\fboxsep}\hskip
\fboxsep \if@visible\vrule \@width\else\hskip \fi\fboxrule}
\if@visible\hrule \@height \else \vskip \fi\fboxrule}}}}
% The command \background{\yellow}{TEXT} typesets TEXT in an \mbox with a
% yellow box behind it. The yellow box is the width of TEXT plus a
% border of width \bgborder around it.
%
% The declaration \hollowbackground causes any \background command in its
% scope to produce an outline, much like \fbox, instead of a filled box.
% The declaration \filledbackground has the opposite effect.
%
%
\newsavebox{\@bgbox}
\newlength{\bgborder}
\bgborder=3pt\relax
\newif\if@hollowbg \@hollowbgfalse
\newcommand{\hollowbackground}{\@hollowbgtrue}
\newcommand{\filledbackground}{\@hollowbgfalse}
\newcommand{\background}[2]{\sbox{\@bgbox}{#2}%
\@tempdima=\ht\@bgbox \advance\@tempdima \dp\@bgbox
\advance\@tempdima 2\bgborder
\@tempdimb=\wd\@bgbox \advance\@tempdimb2\bgborder
\makebox[0pt][l]{#1\raisebox{-\dp\@bgbox}
{\raisebox{-\bgborder}{\if@hollowbg
\frame{\invisible\rule{\@tempdimb}{\@tempdima}}\else
\rule{\@tempdimb}{\@tempdima}\fi}}}%
\hspace*{\bgborder}\box\@bgbox\@aftergroup{\hspace*{\bgborder}}}
% \nogray is a declaration that converts every color other than \white
% to be equivalent to \black, and issues a \hollowbackground declaration
%
\let\@@setcolor=\@setcolor
\def\nogray{\def\@setcolor##1##2##3{\@@setcolor{0}{0}{0}}
\def\white{\@@setcolor{1}{1}{1}}\hollowbackground }
%% INITIALIZATION
%
\def\@red{0}
\def\@green{0}
\def\@blue{0}
\gdef\@aftergroup{\@drawcolor}
\@drawcolor
%
\endinput